home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 June: Reference Library / Dev.CD Jun 94.toast / Periodicals / develop / develop Issue 9 / develop 9 code / Tracks / Tracks.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-11-16  |  4.0 KB  |  140 lines  |  [TEXT/MPS ]

  1.  
  2. #ifndef __TRACE__
  3. #define __TRACE__
  4.  
  5. /* Control call csCode values: */
  6.  
  7. #define kEnableTraceBuffer    128
  8. #define kDisableTraceBuffer    129
  9. #define kSetTraceFileName    130
  10. #define kDisableTraceFile    131
  11. #define kWriteTraceBuffer    132
  12. #define kSetAutoWriteOn        12
  13. #define kSetAutoWriteOff    13
  14.  
  15. #define kDoPeriodicTime        14
  16. #define kGetTraceStatus        15
  17. #define kGetTraceProc        18
  18. #define kSetTraceOnline        10
  19. #define kSetTraceOffline    11
  20. #define kAutoTrace            200
  21.  
  22. #define    kSendCdevBreakMask    144
  23. #define    kGetCdevBreakMask    145
  24. #define    kSendCdevTraceMask    146
  25. #define    kGetCdevTraceMask    147
  26.  
  27. #define    kResetEOF            142
  28. #define    kClearTraceBuffer    143
  29.  
  30. #define    kStartedFromInit    150    // Sets traceOnStartup flag in trace globals
  31. #define kReturnTraceProcPtr    151    // Allows applications to use trace..
  32.  
  33. #define    kMaskSizeBytes        16        // Sizeof A mask (128 bits/8) 
  34.  
  35. /* Control record diagID's */
  36.  
  37. #define kLostDataRecord 0x81
  38.  
  39. /* When using the trace, call the driver once to get this proc ptr and
  40. // traceValue.  Pass traceValue back each time.  
  41. // Upper byte of diagID should be 0x60 for DAPI.
  42. // Use some scheme for the lower byte of diagID...
  43.  
  44. // format: 01 StackPeek record
  45.  
  46. // format: 02 for data block, data1 points to the block, and data2
  47. //             is the length, data3 is ignored.
  48. // format: 03 for Pascal string, data1 points to string, data1 & data2 ignored
  49. // format: 04 - Long:  data1 ignored, data2 contains four bytes, data3 ignored.
  50. // format: 05 - PString, Long combo.  data1 = pascal string, data2 = long, data 3 ignored
  51. // fortmat: 06 - Type Trace:  data1 points to data block.  data2 = length, 
  52. //            data3 is the record's type name as a pascal string.
  53. //            For instance:  data 1,2,3 would be:  &event, sizeof(event), "\pEventRecord"
  54. */
  55.  
  56.  
  57. // The masks are used for determining which trace points to trace...  currently 128 bits..
  58. typedef unsigned long MaskType[4];
  59. typedef    MaskType *MaskTypePtr;
  60.  
  61. typedef pascal void (*TraceProcPtr)(long traceValue, char diagID, char partCode,
  62.     char formatID, long data1, long data2, long data3);
  63.  
  64. typedef struct
  65.     {
  66.     TraceProcPtr traceProcPtr;    /* Function pointer to trace function (returned) */
  67.     long    traceValue;            /* Function pointer to trace function (returned) */
  68.     } TraceProcParam;
  69. typedef struct
  70.     {
  71.     MaskType        Mask;        /* Holds a mask of 128 bits...  */
  72.     Boolean            BreakOnce;
  73.     } TraceMaskParam;    /* Could be either break or trace mask, depends of CSParam */
  74. typedef struct
  75.     {
  76.     unsigned long    traceBuffSize;        /* Size of trace buffer */
  77.     short    traceBuffSizeIndex;    /* Index of which size is current.. */
  78.     } TraceEnableBuffer;
  79. typedef struct
  80.     {
  81.     Ptr        dataPtr;            /* Where to copy record to */
  82.     short    maxLength;            /* Maximum to be returned */
  83.     short    length;                /* Length of record read (returned) */
  84.     Boolean    truncated;            /* Record truncated flag (returned) */
  85.     } TraceReadParam;
  86.     
  87. typedef struct
  88.     {
  89.     char     *fileName;            /* Name of trace file */
  90.     short    vRefNum;            /* Volume refnum */
  91.     } EnableTraceFileParam;
  92.     
  93. typedef struct
  94.     {
  95.     Boolean online;
  96.     Boolean bufferEnabled;
  97.     Boolean fileEnabled;
  98.     Boolean autoWrite;
  99.     long bufferSize;
  100.     short bufferSizeIndex;        /* Keeps track of a which of several possible sizes */
  101.     long bytesBuffered;
  102.     long bytesWritten;
  103.     short fileVolume;            /* vRefNum for trace file */
  104.     char fileName[32];            /* Trace file name */
  105.     Boolean    breakOnceThenClear;
  106.     Boolean    DebugMarkUnset;        // Used to instruct CDEV to update it's debug marks
  107.                                 // since a breakpoint was called and unset.
  108.     Boolean    TraceOnStartup;    // If opened at startup- true, else false... (until changed)
  109.     } TraceStatusBlk, *TraceStatusBlkPtr;
  110.  
  111. typedef struct
  112.     {
  113.     TraceStatusBlkPtr statusPtr;
  114.     } TraceStatus;
  115.  
  116. typedef struct
  117. {
  118.     char diagID;
  119.     char partCode;
  120.     char formatID;
  121.     char pad;
  122.     long data1, data2, data3;
  123. } AutoTraceRec;
  124.  
  125. typedef struct
  126.     {
  127.     union
  128.         {
  129.         TraceProcParam             traceProc;
  130.         TraceEnableBuffer         enable;
  131.         TraceMaskParam             mask;
  132.         TraceReadParam             read;
  133.         EnableTraceFileParam     enableFile;
  134.         TraceStatus             getStatus;
  135.         short                     dummy[11]; /* make sure we are at least as big as csParam must be */
  136.         } u;
  137.     } TraceParamBlock;
  138.  
  139. #endif
  140.